/* verilator lint_off UNUSEDSIGNAL */
module Alu(
  input         clock,
  input         reset,
  input  [31:0] io_aluSrc1,
  input  [31:0] io_aluSrc2,
  input  [3:0]  io_aluOp,
  output [31:0] io_aluResult
);
  wire [31:0] _io_aluResult_T_1 = io_aluSrc1 + io_aluSrc2; // @[Alu.scala 19:45]
  wire [31:0] _io_aluResult_T_3 = io_aluSrc1 - io_aluSrc2; // @[Alu.scala 20:45]
  wire [31:0] _io_aluResult_T_4 = io_aluSrc1 & io_aluSrc2; // @[Alu.scala 21:45]
  wire [31:0] _io_aluResult_T_5 = io_aluSrc1 | io_aluSrc2; // @[Alu.scala 22:45]
  wire [31:0] _io_aluResult_T_6 = io_aluSrc1 ^ io_aluSrc2; // @[Alu.scala 23:45]
  wire [62:0] _GEN_0 = {{31'd0}, io_aluSrc1}; // @[Alu.scala 24:45]
  wire [62:0] _io_aluResult_T_8 = _GEN_0 << io_aluSrc2[4:0]; // @[Alu.scala 24:45]
  wire [31:0] _io_aluResult_T_10 = io_aluSrc1 >> io_aluSrc2[4:0]; // @[Alu.scala 25:45]
  wire [31:0] _io_aluResult_T_14 = $signed(io_aluSrc1) >>> io_aluSrc2[4:0]; // @[Alu.scala 26:73]
  wire  _io_aluResult_T_17 = $signed(io_aluSrc1) < $signed(io_aluSrc2); // @[Alu.scala 28:56]
  wire  _io_aluResult_T_19 = io_aluSrc1 < io_aluSrc2; // @[Alu.scala 29:49]
  wire [31:0] _io_aluResult_T_22 = 4'h1 == io_aluOp ? _io_aluResult_T_1 : 32'h0; // @[Mux.scala 81:58]
  wire [31:0] _io_aluResult_T_24 = 4'h2 == io_aluOp ? _io_aluResult_T_3 : _io_aluResult_T_22; // @[Mux.scala 81:58]
  wire [31:0] _io_aluResult_T_26 = 4'h3 == io_aluOp ? _io_aluResult_T_4 : _io_aluResult_T_24; // @[Mux.scala 81:58]
  wire [31:0] _io_aluResult_T_28 = 4'h4 == io_aluOp ? _io_aluResult_T_5 : _io_aluResult_T_26; // @[Mux.scala 81:58]
  wire [31:0] _io_aluResult_T_30 = 4'h5 == io_aluOp ? _io_aluResult_T_6 : _io_aluResult_T_28; // @[Mux.scala 81:58]
  wire [62:0] _io_aluResult_T_32 = 4'h6 == io_aluOp ? _io_aluResult_T_8 : {{31'd0}, _io_aluResult_T_30}; // @[Mux.scala 81:58]
  wire [62:0] _io_aluResult_T_34 = 4'h7 == io_aluOp ? {{31'd0}, _io_aluResult_T_10} : _io_aluResult_T_32; // @[Mux.scala 81:58]
  wire [62:0] _io_aluResult_T_36 = 4'h8 == io_aluOp ? {{31'd0}, _io_aluResult_T_14} : _io_aluResult_T_34; // @[Mux.scala 81:58]
  wire [62:0] _io_aluResult_T_38 = 4'h9 == io_aluOp ? {{31'd0}, io_aluSrc2} : _io_aluResult_T_36; // @[Mux.scala 81:58]
  wire [62:0] _io_aluResult_T_40 = 4'ha == io_aluOp ? {{62'd0}, _io_aluResult_T_17} : _io_aluResult_T_38; // @[Mux.scala 81:58]
  wire [62:0] _io_aluResult_T_42 = 4'hb == io_aluOp ? {{62'd0}, _io_aluResult_T_19} : _io_aluResult_T_40; // @[Mux.scala 81:58]
  wire [62:0] _io_aluResult_T_44 = 4'h0 == io_aluOp ? 63'h0 : _io_aluResult_T_42; // @[Mux.scala 81:58]
  assign io_aluResult = _io_aluResult_T_44[31:0]; // @[Alu.scala 18:18]
endmodule
